package beanstao.util.store.dal.interfaces;

import java.util.HashMap;

import beanstao.util.id.Id;
import beanstao.util.store.domainobject.XmlDomain;


/**
 * 
 * 数据的Update功能接口。比较轻松的办法是从 'beanstao.util.store.dal.AbstractDomainDbDal' 继承。
 * 
 * @author beanstao@google.com 
 * @version 2.0
 * @date 2010-07-20 7:20:11
 * 
 * @param <T> DomainObject
 */
public interface IDomainXmlUpdate<T extends XmlDomain>
{
	/**
	 * 修改指定的实体。
	 * 
	 * @param domain
	 * @return
	 */
	T update(T domain);

	/**
	 * 修改指定ID的记录的指定(单一)字段，
	 * 
	 * @param user 操作本实体的用户
	 * @param domainId 指定ID的记录
	 * @param key key是字段名
	 * @param value value是字段的值
	 * @return
	 */
	T update(Id modifiorId, Id domainId, String key, Object value);

	/**
	 * 修改指定ID的记录的指定字段
	 * 
	 * @param user 操作本实体的用户
	 * @param domainId 指定ID的记录
	 * @param valueMap 指定字段的集合，key是字段名，value是字段的值
	 * @return
	 */
	T update(Id modifiorId, Id domainId, HashMap<String, Object> valueMap);

	/**
	 * 根据指定的条件修改记录的指定字段
	 * 
	 * @param user 操作本实体的用户
	 * @param valueMap 被修改的指定字段的键值
	 * @param where 指定的条件
	 * @return
	 */
	boolean update(Id modifiorId, HashMap<String, Object> valueMap, String xpath);

}
